<?php


namespace app\api\controller;


use app\api\model\Member as MemberModel;
use app\api\model\MemberToken;
use think\File;
use think\Filesystem;

class Member
{
    public $memberId;
    public $memberData;
    //此方法为类加载的时候一定会执行的方法，可以做一些公共操作例如：校验token
    //1：校验有没有传token参数
    //2：校验token在数据库中是否存在，是否过期，是否被禁用
    //3：校验token是与数据库中的用户匹配
    public function __construct()
    {
        //1：校验有没有传token参数
        $token = input('get.token');
        if (empty($token)) output_error('请登录~');
        //2：校验token在数据库中是否存在，是否过期，是否被禁用
        //find方法 只查一条数据，返回的是对象 select 方法 返回的数组 查多条数据
        $tokenData = MemberToken::where('token_content', '=', $token)->find();
        if (empty($tokenData)) output_error('请登录~');//校验token在数据库中是否存在
        if ($tokenData['end_time'] < time()) output_error('请登录~');//校验token在数据库中是否过期
        //校验token是否被禁用
        if ($tokenData['token_state'] == '2') output_error('请登录~');
        $this->memberId = $tokenData['member_id'];//将tokendata数组的member_id字段的值赋值给memberId变量
        $this->memberData = MemebrModel::where('member_id', '=', $this->memberId)->find();
    }

    public function getMemberData()
    {
        $this->memberData['member_avatar'] = URL_AVATAR . $this->memberData['member_avatar'];
        output_data($this->memberData);
    }

    public function logout()
    {
        MemberToken::where('token_content', '=', input('token'))->update(array('token_state' => '2'));
        output_data('1');
    }

    public function modifyPassword()
    {
        $old = input('get.old');
        $new = input('get.new');
        if (empty($old) || empty($new)) output_error('请输入旧密码与新密码');
        if (strlen($new) < 6) output_error('新密码不能小于6位');
        if ($this->memberData['member_password'] != md5($old)) output_error('旧密码不正确');
        MemberModel::where('member_id', '=', $this->memberId)->update(array('member_password' => md5($new)));
        output_data('1');
    }

    public function modifyNickname()
    {
        $nickname = input('get.nickname');
        if (empty($nickname)) output_error('请输入昵称');
        $data = MemberModel::where('member_nickname', '=', $nickname)->find();
        if (!empty($data)) output_error('昵称已被他人使用');
        $data = MemberModel::where('member_nickname', '=', $this->memberId)->update(array('member_nickname' => $nickname));
    }

    public function modifyGender()
    {
        $gender = input('get.gender');
        if (empty($gender)) output_error('请输入性别');
        $data = MemberModel::where('member_gender', '=', $this->memberId)->updata(array('member_gender' => $gender));
    }

    public function modifyMobile()
    {
        $mobile = input('get.mobile');
        if (empty($mobile)) output_error('请输入手机号');
        if (strlen($mobile) < 11) output_error('手机号不能小于11位');
        $data = MemberModel::where('member_mobile', '=', $this->memberId)->updata(array('member_mobile' => $mobile));
        output_data('1');
    }

    public function modifyAvatar()
    {
        $file = request()->file('image');
        $name = Filesystem::disk('avatar')->putFile('', $file, 'uniqid');
        MemberModel::where('member_id', '=', $this->memberId)->update(array('member_avatar' => $name));
        output_data($name);
    }

}